This invention generally relates to improvements in computer systems, and more particularly, to system software for managing the design, simulation, implementation and maintenance of a manufacturing process.
A visit to virtually any modern manufacturing facility in the world leaves room for little doubt that assembly and machining lines have become an integral part of the manufacturing process. Robots, computers, programmable logic controllers, mills, drills, stamps, clamps, sensors, transfer bars, assemblers, etc., are more numerous than people in most modern manufacturing facilities. This is because almost every industry has recognized that use of automated assembly and machining lines to form and assemble product components and assemblies reduces manufacturing time, reduces product costs and increases product quality. Hereinafter, automated assembly and machining will be referred to collectively as automated manufacturing.
Unfortunately, while automated manufacturing has a large number of advantages, such manufacturing also has a number of shortcomings. In particular, the process (hereinafter “the development process”) of designing, constructing and debugging a manufacturing process has a large number of shortcomings. To understand the shortcomings of the development process, it is helpful to consider an exemplary development process. To this end, an exemplary development process will be described in the context of developing a manufacturing line for producing a basic automobile door frame assembly (i.e. the door without the window, window motors, activation buttons and other trim components).
To this end, initially a body engineer designs a door assembly based on experience of parts, structural knowledge and welding information. To facilitate the door frame design process a body engineer typically uses a standard computer aided design (CAD) package (e.g. CATIA, Pro-Engineer, etc.). Using such a package the body engineer can change frame dimensions, component thicknesses, rivet numbers, angles, the shapes of curved surfaces and so on.
A. The Development Process
From beginning to end, including the skills of a body engineer, the development process required to design, build and debug an automated manufacturing line involves no less than four separate engineering disciplines, each of which has a different set of required engineering skills. The three disciplines in addition to body engineering include process engineering, mechanical engineering, controls engineering and manufacturing engineering.
Once the door frame assembly has been designed, the frame design information is given to a process engineer. The process engineer designs a process which will be required to manufacture the door frame assembly. To this end, the process engineer translates management numbers for finished door frame assemblies into a high-level process of actions and resources based on acquired experience. When specifying the high-level process the process engineer specifies required manufacturing tools (e.g. robots, clamps, workcells, etc.).
This tool defining process, like the door frame design process, has been streamlined by use of computer aided manufacturing (CAM) software packages which enable a process engineer to virtually specify different mechanical tool types and tool configurations including clamps, robots, mills, drills, assemblers, etc. which can be used to actually manufacture the door frame assembly. Sometimes a tool library will be provided in a CAM package which includes commonly used mechanical tools, the mechanical tools selectable for reuse when required. Where a required tool is not provided in a library, the CAM package and or CAD package can be used to design the required mechanical tool for use in the door frame manufacturing process and for storage in the library for subsequent use if desired.
In addition to specifying the mechanical tools, the process engineer may also specify mechanical tool movements required during the manufacturing process. For example, for a clamp, the process engineer may specify an open position and a closed position and thereby may define a range of movements therebetween. This ability to specify tool actions allows a process engineer to build a model of a mechanical tool in software such that the model has both static and kinematic characteristics. The virtual tool can then interact with other parts in an automated virtual manufacturing process in the time dimension.
Moreover, the process engineer also specifies mechanical tool timing and sequencing via either a bar chart timing diagram, a flow chart or some other suitable sequence specifying tool. This sequencing information indicates the sequence of tool movements during the automated manufacturing process. Furthermore, the process engineer specifies resources and goals to drive the manufacturing process and may attempt to generate a cost justification for the frame assembly manufacturing process.
Hereinafter, the term “mechanical resources” will be used to refer generally to the manufacturing tools which are specified by a process engineer and the specified tool movements will be referred to as “behavior”. In addition the information as a whole provided by the process engineer will be referred to as “process information”.
Next a control engineer receives the process information and, based on experience, uses the process information to select control mechanisms and determines how to configure the mechanisms for controlling the mechanical resources. The control system includes at least one PLC (i.e. a controller), sensors and actuators and electrical lines and hydraulic tubing for linking the PLC to the actuators and sensors. The actuators and sensors are control mechanisms.
The actuators are eventually linked to the mechanical resources for motivating the mechanical resources in a manner consistent with the process information. Sensors are eventually linked to mechanical resources or are positioned adjacent mechanical resources and indicate an instantaneous condition (e.g. the position of a resource, the temperature of a liquid, the position of a work item—the upper left corner of a door frame, etc.) in the manufacturing process.
In addition, the control engineer has to integrate the mechanical sequencing information, causal relationships, a Human Machine Interface (HMI), I/O tables and safety and diagnostic information into the control system design. To aid in the process of selecting and configuring control devices to control the mechanical resources and to provide a blue print for subsequent assembly of the control system, the control engineer also generates a control system schematic with representations of each control device and electrical and hydraulic links between devices and the PLC. Hereinafter the information provided by the control engineer will be referred to as “controls information”.
Next, a manufacturing engineer receives the controls information and the process information, uses the process information to construct the line via specified mechanical resources, uses the controls information to construct the control system and links the control system to the mechanical resources.
After the line is completely developed, the control engineer further generates execution code to execute on the PLCs to implement the automated manufacturing processes. Then a control engineer performs tests on line tools to identify execution code bugs in the system design. For example, the control engineer may check to determine if a robot arm will crash into a work item on a transfer bar during a specified tooling process or if a sensor is operating properly to detect the presence of a clamp during a clamp extending movement. While an engineer other than the control engineer may be able to debug specific systems, in most cases the control engineer is required for the debugging process. This is because any change in the system may ripple through other parts of the control process which are not intuitive and which may only be known to the control engineer. In most cases many bugs show up during this debugging process and therefore this step in the automated manufacturing process is extremely tedious. This is particularly true in automated manufacturing which requires complex control systems.
Hereinafter, the separate sub-processes of the development process which are performed by the separate engineers will be referred to as “process phases”.
B. Development Process Shortcomings
The above described development process has a large number of shortcomings. First, the development process is extremely time consuming. In fact, the typical time required for designing, building, testing and reworking a simple manufacturing line is often months and the time required for a relatively complex line often takes years of man hours. In many industries the import of time is exacerbated by competitive product cycles where getting a new product to market before a competitor is crucial to a companies competitive posture. For example, in the automotive industry fresh styling is extremely important to entice product turnover.
Second, while some of the development process phases have been streamlined using design software (e.g. CAD and CAM are used to design a door frame assembly and the mechanical tools required to construct the frame assembly), other process phases are not streamlined. This is particularly true of the PLC logic programming process.
While the industry is starting to employ various programming languages, most industrial PLCs are still programmed in Ladder Logic (LL) where instructions are represented graphically by “contacts” and “coils” of virtual relays connected and arranged in ladder-like rungs across power rails. LL, with its input contacts and output coils, reflects the emphasis in industrial control on the processing of large amounts of input and output data.
LL also reflects the fact that most industrial control is “real time”; that is, an ideal industrial controller behaves as if it were actually composed of multiple relays connected in parallel rungs to provide outputs in essentially instantaneous response to changing inputs. Present industrial PLCs do not, in fact, employ separate parallel relay-like structures, but instead simulate the parallel operation of the relays by means of a conventional Harvard or Von Neumann-type computer processor which executes instructions one at a time, sequentially. The practical appearance of parallel operation is obtained by employing extremely fast processors in the execution of the sequential control program.
As each rung is executed, inputs represented by the contacts are read from memory (as obtained from inputs from the controlled process or the previous evaluation of coils of other rungs). These inputs are evaluated according to the logic reflected in the connection of the contacts into one or more branches within the rungs. Contacts in series across a rung represent boolean AND logic whereas contacts in different branches and thus in parallel across a rung represent boolean OR logic.
Typically a single output coil at the end of each rung is set or reset. Based on the evaluation of that rung, this setting or resetting is reflected in the writing to memory of a bit (which ultimately becomes an output to the industrial process or to another LL rung).
Once a given rung is evaluated the next rung is evaluated and so forth. In the simplest form of LL programming there are no jumps, i.e. all rungs are evaluated in a cycle or “scan” through the rungs. This is in contrast to conventional computer programming where branch and jump instructions cause later instructions or groups of instructions to be skipped, depending on the outcome of a test associated with those branch or jump instructions.
While LL is well suited for controlling industrial processes like those in the automotive industry, LL programming is not an intuitive process and, therefore, requires highly skilled programmers. Where hundreds of machine tool movements must be precisely synchronized to provide a machining process, programming in LL is extremely time-consuming. The time and relative skill associated with LL programming together account for an appreciable percentage of overall costs associated with a control system.
Industry members have made several attempts to streamline the logic programming process. One way to streamline any type of programming is to provide predefined language modules, expressed in a language such as LL, which can be used repetitively each time a specific function is required. Because of the similar types of tools and movements associated with different mechanical tools, industrial control would appear to be an ideal industry for such language modules.
The predefined logic module approach works quite well for certain applications, like small parts-material handling or simple machining. The reason for this is that the LL required for these applications tends to be very simple. In small parts material handling applications the I/O count is low and the interfaces between modules are minimal. In fact, the mechanisms are often independent units, decoupled from neighboring mechanisms by part buffers such that no signals are required to be exchanged between modules. These “loosely coupled” systems lend themselves to “cut and paste” programming solutions.
Unfortunately the predefined, fixed logic module approach does not work well for other applications, for example metal-removing applications. There are several reasons for this. First, there can be considerable variation in how components, such as sensors and actuators, combine to produce even simple mechanisms. Second, processes like metal removing normally require tightly controlled interaction between many individual mechanisms. Exchanging signals called interlocks between the control logic modules of the individual mechanisms control the interaction. The application of specific interlocks depends on knowledge of the process and the overall control strategy, information not generally needed or knowable when the control logic for each mechanism is defined.
For example, a drill is a typical metal-removing tool used in the automotive industry. In this example an ideal drill is mounted on a carriage that rides along a rail between two separate limiting positions on a linear axis, an advanced position and a returned position. Two limit switches, referred to herein as returned and advanced LSs, are positioned below the carriage and, when tripped, signal that the drill is in the returned and advanced positions, respectively. Two separate dogs (i.e. trigger extensions), an advanced dog and a returned dog, extend downwardly from the bottom of the carriage to trip the LSs when the advanced and returned positions are reached, respectively. In the ideal case, both LSs may be assumed to be wired in the same “normally opened” manner, so that electrically speaking they are open when released and closed when triggered. In this ideal case, where the physical characteristics of the switches are limited, a single LL logic rung can determine when the drill is in the returned position and another rung can determine when the drill is in the advanced position.
Unfortunately, in reality, there are electrically two types of LSs, one LS type being wired normally opened and the other type wired normally closed. Furthermore, any LS can be mechanically installed in a tripped-when-activated configuration, or a released-when-activated configuration. All combinations of these types are used for various types of applications. Thus, application requirements may demand control logic capable of handling any configuration of LS types.
Simple mathematics demonstrates that with two different electrical types of LSs and two mechanical configurations, there are sixteen possible configurations of a two-position linear slide. Consider the language modules required to implement position logic for all these configurations. To accommodate all sixteen-switch configurations, there could be sixteen different language modules, each containing fixed LL logic, and each named for the case it could handle. In this case, there would be duplicate logic under different names. Alternatively, four unique language modules could be provided, but then the user would have difficulty identifying which of the sixteen physical configurations that the four modules could handle.
Clearly, even for a simple drill mounted on a two position linear slide, application variables make it difficult to provide a workable library of fixed language modules. Adding more switches to the linear slide only increases, to an unmanageable level, the number of language modules required in the library.
Moreover, the contents of a complete language module for a drill must also consider other variables. These variables include, for example, the number and type of actuators required; the type of spindle, if any; whether or not a bushing plate is required; what type of conveyor is used; whether or not the drill will include an operator panel to enable local control. If an operator panel is included, what type of controls (i.e. buttons, switches and indicator lights) are required, just to name a few. Each tool variable increases the required number of unique LL modules by more than a factor of two, which makes it difficult at best to provide an LL library module for each possible drill configuration.
Taking into account the large number of different yet possible machine-line tools, each tool having its own set of variables, the task of providing an all-encompassing library of fixed language modules becomes impractical. Even if such a library could be fashioned, the task of choosing the correct module to control a given tool would probably be more difficult than programming the required LL logic from scratch.
For these reasons, although attempts have been made at providing comprehensive libraries of fixed language modules, none has proven particularly successful and much LL programming is done from scratch.
Third, the process of generating schematic control diagrams is extremely labor intensive and thus time consuming. This is because most schematic control diagrams have to be constructed by hand linking electrical and hydraulic lines from one control mechanism to another, from devices to a PLC representation, linking control devices to mechanical tools and so on.
To reduce the time required to generate control system schematics, most control engineers now use one or more commercially available CAD systems specifically designed for generating schematic designs. These CAD systems enable an engineer to select standard representations for specific control mechanisms and enable relatively quick electrical and hydraulic linking representations to be generated. Nevertheless, these CAD systems can result in erroneous connection specification as a control engineer makes the decisions about how to link control mechanisms. This is particularly true in the case of a large control system where only a small portion of the entire control system can be viewed on a work station screen at one time. In this case, the possibility of linking electrical and hydraulic lines incorrectly is exacerbated. Moreover, in complex control systems, while reducing the overall time required to form a control system schematic, the time is still appreciable.
Fourth, the process of generating diagnostic tools is also not streamlined. For example, there may be specific conditions which should not occur during a machining cycle. For instance, where the control mechanisms for a clamp include both extended and retracted limit switches, there should never be an instance when both the extended and retracted switches are triggered. Unlikely or unpredictable conditions are referred to hereinafter as interesting conditions. In current systems, a control engineer should identify the most troubling interesting conditions which should be identified during a machining cycle and provide logic outputs to support indicators of the interesting conditions.
In addition, some systems require actual diagnostic functions to be performed. For example, many times an interesting condition has only one or two possible causes. In these cases, the system may be required to, when the interesting condition occurs, identify the possible causes so that a system operator can locate the cause of the interesting condition and eliminate the cause. Here, the system usually includes a screen for providing an alphanumeric message to the operator.
Moreover, some applications may require a system to attempt to further identify or even eliminate the cause of an interesting condition. In this case, when an interesting condition occurs, the system may check other system I/O to further diagnose the cause of the condition, providing a report to the operator via a system screen. In the alternative, when an interesting condition occurs and there is only one possible cause, the system may attempt to eliminate the condition. For example, where a transfer bar is stuck, the system may be programmed to reverse the transfer bar prior to moving forward again.
Where a system requires diagnostic functions in addition to interesting condition reporting, in addition to identifying interesting conditions, the control engineer has to identify all possible causes of each interesting condition, compose informative instructions for display to an operator indicating the causes of the interesting conditions, provide logic to identify the interesting conditions and, in some cases, provide logic to eliminate the interesting conditions.
In addition to interesting conditions which should not occur, there may also be other interesting conditions which should be reported to a system operator. In these cases diagnostic logic should be provided to identify these other interesting conditions and provide some type of indication. Clearly identifying all interesting conditions and their causes, composing messages for each cause and providing logic to do the same is a complex and time consuming endeavor.
Fifth, the process of specifying HMI design and logic required to support HMI representations is not streamlined. Here the control engineer, while creating the control logic generally, has to weave HMI logic into the system which provides desired PLC input signals (e.g. signals from sensors) and enables control via PLC output signals to control actuators.
Sixth, the process of debugging is not streamlined. As indicated above, an entire mechanical line (including all tools and accompanying control system) has to actually be designed and constructed and PLC execution code has to be generated prior to performing the debugging process. Obviously, once tools have been constructed and execution code has been provided the process of backtracking to modify design is difficult and extremely costly.
Seventh, while the process described above may be manageable for a single door frame assembly, similar processes are required for virtually every separate part of a final product and similar processes are also required to assemble parts into the final product. For example, because a typical automobile requires many thousands of different parts, a development process similar to the process described above must be repeated several thousand times to provide a completed automobile.
In the end, if line throughput is not sufficient parts of the line or even the entire line may have to be modified to increase line throughput. Once again, line modification is expensive as any system change can ripple through the entire control system thereby requiring additional changes.
To streamline the debugging process and facilitate cost justification prior to actually building and testing a manufacturing line, the industry has attempted to debug an automated manufacturing line virtually. In theory, virtual building and simulation enables a designer to modify line design relatively inexpensively when a bug is identified or when the costs associated with a particular line design cannot be justified by an expected throughput.
One virtual simulation solution has been to effectively provide a cartoon or movie illustrating all mechanical tools on a line in three dimensions and to run the manufacturing line in the virtual world to illustrate system operation. One way to accomplish this is to provide a video module which includes a video clip for each separate mechanical tool included on an assembly line. The video module is driven by the mechanical timing diagram such that, when the timing diagram indicates a specific resource movement, the video module plays the video clip associated with the specific resource movement. The video module is capable of running several video clips at a time on different sections of a display screen so that, by arranging the separate video clips on the screen a general picture of a complete manufacturing process can be provided. While this solution is helpful in visualizing a manufacturing process, unfortunately this solution does not illustrate tool control in the real world which will result from actual execution code.
Another virtual simulation solution has been to provide off-line programming for certain tools which is then linked to virtual representations of those tools for simulating actual tool movements. For example, most robots are controlled by specialized controllers which execute controller specific languages (i.e. languages which typically are very different than the PLC language) in such a way that a robot can move a work piece through space along a variety of path profiles. Some companies have developed virtual simulation tools which enable robot programs which are developed off-line and in the controller specific languages to be used to drive virtual representations of the robot and a work piece handled thereby, including robot and work piece translation through virtual space. Importantly, the actual program used to drive the robot in the real world is used to drive the virtual robot in the virtual environment. As described above, the components in the work cell (including the part or part components) already exist in some mechanical CAD environment and are available to these programming tools. With these simulation tools a process engineer can interact with a virtual work cell and verify that his robot program does what he intends the program to do.
In order to truly debug the robot program in a virtual world, the rest of the robot's real world environment must also be simulated such that the environment interacts dynamically with the robot motion. For example, clamps need to open and close, parts need to move into and out of the work cell, humans need to start and stop processes, sensors need to sense part and manufacturing tool locations and so on.
Unfortunately, while the simulation tools described above are used to drive virtual robots with the actual robot programs which will be used in the real world, similar tools have not been developed for simulating the robot environment (e.g. clamps, sensors, actuators, stops and starts, contingencies, HMIs, etc.). Existing tools simulate the robot's environment in the virtual world through a combination of proprietary modeling languages and graphical interfaces which are wholly disconnected from the programs which are used to control the manufacturing tools in the real world. Thus, while the virtual environment is controlled via modeling languages, in the real world these non-robotic components are controlled via a PLC and a control language (e.g. LL).
It should also be noted that, while robots themselves are internally controlled via controller specific languages, ultimately, each robot is linked to other system tools via a PLC which provides commands and receives feedback via a more conventional control language.
To provide pre-construction cost justification, in addition to the virtual simulation tools described above, various systems have been developed for estimating both the costs associated with automated manufacturing lines and groups of related lines and the throughput for specific lines. While these justification system may sometimes fortuitously generate cost data which is close to the actual cost data corresponding to a completed system, in most cases these justification systems provide a ball park figure at best. Unfortunately, while a ball park figure may be acceptable in some industries, in other industries where competition is particularly keen, such ball park figures are not very helpful in strategic financial planning as even a few percent error may require line redesign.
Thus, it should be appreciated that despite industry efforts to streamline the development process, the development process remains extremely complex. The transition from part design to process design to mechanical design and then to controls is a paper activity. Each of these activities separately have their own software tools, and of course, a competent set of engineers. The barriers between the software tools aren't just a matter of bridging different data types. Because the tools used in each phase of the development process evolved through solving their respective user's unique problems, their views of the world are very different, even though they ultimately solve a common problem: how to build a product.
In addition to the system development problems discussed above, failure and interesting condition reporting diagnostics have a number of shortcomings. One important shortcoming is that a system which supports interesting condition or failure reporting typically provides insufficient information to enable a system operator to identify the cause of the failure. This is because system events may be contingent upon the conclusion of many other events and the diagnostics provided typically cannot indicate which of a long string of contingent events causes a failure or an interesting condition to occur. For example, where extension of a clamp is to be monitored and failure reported, if clamp extension is contingent upon 10 previous events, when clamp failure occurs and is reported, which of the 10 previous events failed is not reported and some investigation is required.
In addition, where prescriptive diagnostics are provided, the prescriptive messages (i.e., the text which indicates likely cause of the problem) are only pre-failure hunches as to what the actual cause of failure might be. While based on experience and hence correct much of the time, these hunches may not be correct and hence may lead an operator in the wrong direction to address the failure this wasting system and operator resources.
For example, while the process engineer can specify specific tools and movements required to carry out a process, the process information is in a form which, while providing specifying information to the control engineer, cannot be used directly by control engineers to perform his development tasks. Instead, each time the development process is handed from one engineer to another, the receiving engineer must start by generating his own set of information which is based on the information specified by the previous engineers and, only then can the receiving engineer begin to perform his task of specifying further information for the next engineer down stream. Thus, the development process is broken up into separate pieces despite the fact that common information threads pass through each of the separate phases of the development process.
For at least the aforementioned reasons, it would be advantageous to have a system which would streamline the entire development process including defining an automated manufacturing line, developing execution code to control the manufacturing line tools including tool movements, sequencing, emergency situations, etc., specifying and supporting HMIs for the line, specifying diagnostics for the line, simulating line operation in a virtual environment prior to building the line and using the actual real world control programs to drive a virtual line in the virtual environment, debugging the control programs, and providing schematic diagrams for a complete control system automatically. It would also be advantageous to have a system wherein the common threads of information which are provided by one engineer are sustained throughout the development process and automatically provided in a form which is useable by engineers in subsequent process phases.
Moreover, it would be advantageous to have a diagnostics scheme which could specifically and immediately identify the symptoms which are associated with a failure.